// 图片懒加载插件


// 使用vueuse 监听视图
import { useIntersectionObserver } from '@vueuse/core'

export const lazyPlugin = {
    // 定义插件
    install(app) {
        // 懒加载指令逻辑

        // 定义全局指令
        app.directive('img-lazy', {
            mounted(el, binding) {
                // el:指令绑定的那个元素 img （图片对象）
                // binding：binding.value 指令等于号后面绑定的表达式的值 图片url
                // console.log(el, binding);
                // VueUse 函数
                // stop 函数可以在停止监听
                // 这里一直在监听，完成对应操作后，仍在监听，存在内存浪费，
                // 解构出useIntersectionObserver 方法里面的 stop 方法
                const { stop } = useIntersectionObserver(
                    // 监视哪个元素
                    el,
                    // 布尔值，实时的监听el有没有进入到视口区域
                    ([{ isIntersecting }]) => {
                        // console.log(isIntersecting);
                        if (isIntersecting) {
                            // 进入视口区域
                            el.src = binding.value
                            // 停止监听
                            stop()
                        }
                    },
                )
            }
        })
    }
}